/*
  学习目标：使用dispatch对count + 1 和减1

    1. 通过 dispatch 发起修改state的action
    💥 dispatch必须接受一个action
    💥 action是普通的js对象，而且必须有type字段, 代表等会要触发的事件

    2. 通过 redcuer 函数的第二个参数，接收到action对象
    3. 通过计算返回新值，覆盖旧值
*/

import React from 'react';
import { legacy_createStore as createStore } from 'redux';
// 2. 通过 redcuer 函数的第二个参数，接收到action对象
const store = createStore(function (state = { count: 0 }, action) {
  console.log('action -----> ', action);
  // 3. 通过计算返回新值，覆盖旧值
  if (action.type === 'add') {
    return {
      ...state,
      count: state.count + 1,
    };
  }
  if (action.type === 'des') {
    return {
      ...state,
      count: state.count - 1,
    };
  }

  return state;
});
console.log('store -----> ', store);

// vue2: store.$commit('add')
// 1. 通过 dispatch 发起修改state的action
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'add' });
store.dispatch({ type: 'des' });

store.getState();
console.log('store.getState() -----> ', store.getState());

export default function App() {
  return <div></div>;
}
